const mongoose = require('mongoose');
const Schema = mongoose.Schema;  // 设计集合(表)结构


// 1. 连接数据库，见/utils/connect.js


// 2. 设计文档(表)结构
// 设计用户表的表结构
const usersSchema = new Schema({
    username: {
        type: String,
        required: true
    },
    phone: {
        type: String,
        required: true
    },
    password: {
        type: String,
        required: true
    },
    time: Date,
    avatar: String
}, { versionKey: false })
// { versionKey: false } 往数据表中插入数据时会自动生成一个‘__v’的字段，据说是用来记录版本号，在 Schema 中加入 { versionKey: false } 可以解决这个问题

const ticketOrdersSchema = new Schema({
    username: String,
    phone: String,
    ticketName: String,
    normalTicketNum: Number,  // 标准卡
    normalTicketPrice: String,
    specialTicketNum: Number,  // 儿童/老年卡
    specialTicketPrice: String,
    ticketDate: Date,
    totalPrice: String,
    createTime: Date,
}, { versionKey: false })
// { versionKey: false } 往数据表中插入数据时会自动生成一个‘__v’的字段，据说是用来记录版本号，在 Schema 中加入 { versionKey: false } 可以解决这个问题

const cardOrdersSchema = new Schema({
    username: String,
    phone: String,
    cardName: String,
    cardKind: Number,  // 1: 水晶梦幻卡  2: 奇妙金卡  3: 无限钻石卡
    cardType: Number,  // 1: 标准卡  2: 儿童/老年卡
    cardNum: Number,
    cardPrice: String,
    cardStartDate: Date,
    cardEndDate: Date,
    createTime: Date,
}, { versionKey: false })
// { versionKey: false } 往数据表中插入数据时会自动生成一个‘__v’的字段，据说是用来记录版本号，在 Schema 中加入 { versionKey: false } 可以解决这个问题

const ticketInfoSchema = new Schema({
    ticketName: String,
    ticketNameType: Number,  // 1:乐园一日票+乐园美食套券  2:乐园夜场乐游乐食  3:一日票  4:夜场票
    ticketType: Number, // 1: 标准票  2:儿童/老年票
    ticketPrice: String,
    updateTime: Date,
}, { versionKey: false })
// { versionKey: false } 往数据表中插入数据时会自动生成一个‘__v’的字段，据说是用来记录版本号，在 Schema 中加入 { versionKey: false } 可以解决这个问题

const cardInfoSchema = new Schema({
    cardName: String,
    cardKind: Number,  // 1: 水晶梦幻卡  2: 奇妙金卡  3: 无限钻石卡
    cardType: Number,  // 1: 标准卡  2: 儿童/老年卡
    cardPrice: String,
    updateTime: Date,
}, { versionKey: false })
// { versionKey: false } 往数据表中插入数据时会自动生成一个‘__v’的字段，据说是用来记录版本号，在 Schema 中加入 { versionKey: false } 可以解决这个问题


// 3. 将文档结构发布为模型
/**
 *  mongoose.model(params1, params2)  将一个架构发布为 model
 *  params1: 传入一个字符串用来表示你的数据库名称，mongoose会自动将字符串改为 小写复数形式的单词
 *           例如，写 User 会被改为 users
 *  params2: 传入一个架构 Schema
 *  返回值: 模型构造函数
 */
const UsersModel = mongoose.model('park_users', usersSchema);
const TicketOrdersModel = mongoose.model('ticket_orders', ticketOrdersSchema);
const CardOrdersModel = mongoose.model('card_orders', cardOrdersSchema);
const TicketInfoModel = mongoose.model('ticket_infos', ticketInfoSchema);
const CardInfoModel = mongoose.model('card_infos', cardInfoSchema);


// 4. 有了模型构造函数之后，就可以使用这个模型构造函数对数据集合(数据表)中的数据进行操作(增删改查)
exports.UsersModel = UsersModel;
exports.TicketOrdersModel = TicketOrdersModel;
exports.CardOrdersModel = CardOrdersModel;
exports.TicketInfoModel = TicketInfoModel;
exports.CardInfoModel = CardInfoModel;

